%%% Northeastern University, CCIS dissertation style, based on the
%%% memoir class. Must be included under \documentclass[12pt]{memoir}
%%% Made by Vassilis Koutavas, 2008.

%%% Time-stamp: <[dissertationfmt.sty] modified by Vasileios Koutavas on Thursday, 2008.09.18 at 16:21:22 on whitebook.local>

\ProvidesPackage{dissertationfmt}

%\typeout{NEU, CCIS Dissertation style by Vassilis Koutavas, 2008}

\RequirePackage{timestamp}
\RequirePackage{amsthm}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Page margins and lengths
 
\setstocksize{11in}{8.5in} % Letter paper
\settrimmedsize{\stockheight}{\stockwidth}{*}
\settrims{0in}{0in}
\settypeblocksize{*}{33pc}{*} % Idealy 66 chars per line (60-70)
\setlrmargins{1.6in}{*}{*}  % Margins should be at least 1.25 in each.
%\settypeblocksize{*}{35pc}{*} % Idealy 66 chars per line (60-70)
%\setlrmargins{1.4in}{*}{*}  % Margins should be at least 1.25 in each.

% Abstract has no extra margins
\setlength{\absleftindent}{0pt}
\setlength{\absrightindent}{0pt}

% header height
\newlength{\@tmp@headheight}
\setlength{\@tmp@headheight}{20pt}
% header separator
\newlength{\@tmp@headsep}
\setlength{\@tmp@headsep}{10pt}
% footer skip
\newlength{\@tmp@footskip}
\setlength{\@tmp@footskip}{30pt}
\setheadfoot{\the\@tmp@headheight}{\the\@tmp@footskip}
\setheaderspaces{*}{\the\@tmp@headsep}{*}

%%% Top and bottom margins calculation
% actual whitespace above header and below footer
\newlength{\@tmp@headspace}
\setlength{\@tmp@headspace}{1.0in}
\newlength{\@tmp@footspace}
\setlength{\@tmp@footspace}{1.0in}
% calculate header margin and footer margin to achieve the
% above whitespace
\newlength{\@tmp@uppermargin}
\setlength{\@tmp@uppermargin}{\@tmp@headspace}
%\addtolength{\@tmp@uppermargin}{\the\@tmp@headheight}
\addtolength{\@tmp@uppermargin}{\@tmp@headsep}
\newlength{\@tmp@lowermargin}
\setlength{\@tmp@lowermargin}{\@tmp@footspace}
% uncomment next line if there is a footer in normal version
%\addtolength{\@tmp@lowermargin}{\the\@tmp@footskip}
\setulmarginsandblock{\the\@tmp@uppermargin}{\the\@tmp@lowermargin}{*}
%% end top and bottom margins calculation

\setmarginnotes{.5ex}{4ex}{10pt}

% fix all lengths
\checkandfixthelayout

% Test:
%\newlength{\mylen}
%\settoheight{\mylen}{100}
%\typeout{------Footer Height: \the\mylen}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Headings style

%\newcommand*{\pretoctitle}[1]{{\clearpage\centering
%\vspace*{-.5in}#1\par}}
\newcommand*{\prefacetitle}[1]{\clearpage \vspace{.5in} \centering \chaptitlefont{\printchaptertitle{#1}} \\ \vspace{.5in} {\thispagestyle{plain} }}%
%\par\nobreak {\normalfont Figure \hfill Page}\par\nobreak}}

\renewcommand*{\lofheadstart}{\vspace*{-.6in}}
%\renewcommand*{\afterloftitle}{\thispagestyle{plain} %
%\par\nobreak {\normalfont Figure \hfill Page}\par\nobreak}

\renewcommand*{\tocheadstart}{\vspace*{-.6in}}
%\renewcommand*{\aftertoctitle}{\thispagestyle{plain} %
%\par\nobreak \mbox{}\hfill{\normalfont Page}\par\nobreak}

\makechapterstyle{ccsthesischapter}{%
  % Chapters
  \renewcommand{\chapnamefont}{\normalfont\Large\scshape}
  \renewcommand{\printchaptername}{\center\chapnamefont \@chapapp}
  \renewcommand{\chapnumfont}{\normalfont\Large\scshape}
  \renewcommand{\chaptitlefont}{\normalfont\LARGE}
  \renewcommand{\printchaptertitle}[1]{\center\chaptitlefont ##1}

  % Sections
  \setsecheadstyle{\normalfont\Large\bfseries\raggedright} 
  \setsubsecheadstyle{\normalfont\large\bfseries\raggedright} 
  \setsubsubsecheadstyle{\normalfont\large\bfseries\raggedright}
  \setparaheadstyle{\normalfont\normalsize\bfseries}
  \setsubparaheadstyle{\normalfont\normalsize\bfseries}

  % Abstract
  \renewcommand{\abstractnamefont}{\normalfont\Huge} 
  \renewcommand{\abstracttextfont}{\normalfont}
  \renewcommand{\absnamepos}{flushright}

  % vertical spaces for headings
  \setbeforesecskip{-18pt \@plus -2pt \@minus -2pt}
  \setaftersecskip{12pt \@plus 1pt \@minus 1pt}
  \setbeforesubsecskip{-16pt \@plus -2pt \@minus -2pt}
  \setaftersubsecskip{11pt \@plus 1pt \@minus 1pt}
  \setbeforesubsubsecskip{-16pt \@plus -2pt \@minus -2pt}
  \setaftersubsubsecskip{11pt \@plus 1pt \@minus 1pt}
  \setbeforeparaskip{11pt \@plus 1pt \@minus 1pt}
  \setafterparaskip{-1em}
  \setbeforesubparaskip{11pt \@plus 1pt \@minus 1pt}
  \setaftersubparaskip{-1em}

  \setlength{\midchapskip}{7pt}
  \setlength{\abstitleskip}{7pt}


  % Numbering
  \maxsecnumdepth{subsubsection}
  \setsecnumdepth{subsubsection}

  % Subsections apear in ToC
  \maxtocdepth{subsection}
}

\chapterstyle{ccsthesischapter}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Page style

% Start from the headings style
\copypagestyle{ccsthesispage}{headings}
\setlength{\headwidth}{\textwidth} 
\addtolength{\headwidth}{\marginparsep} 
\addtolength{\headwidth}{\marginparwidth}
\makeheadposition{ccsthesispage}{flushright}{flushleft}{flushright}{flushleft}
\makerunningwidth{ccsthesispage}{\headwidth} 
\makeheadrule{ccsthesispage}{\headwidth}{\normalrulethickness}

% Draft version have extra footers
\ifdraftdoc
\RequirePackage[usenames]{color}
\makeevenfoot{ccsthesispage}%
  {\color{Gray}\normalfont\small\slshape Book Draft: \timestamp}{}
{}%  {\color{Gray}\normalfont\small\slshape Chapter SVN Draft: \svndate}
\def\chaptertimestamp{\timestamp}
\makeoddfoot{ccsthesispage}% 
  {\color{Gray}\normalfont\small\slshape Book Draft: \chaptertimestamp}{}
{}%  {\color{Gray}\normalfont\small\slshape Chapter SVN Draft: \svndate}
\fi

% apply pagestyle
\pagestyle{ccsthesispage}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Set other parameters

% set double spacing
%\renewcommand{\baselinestretch}{1.5}

%fixes overflowing 3-digit page numbers in ToC
\setpnumwidth{2.55em}

% Captions style (see documentation of ccaption package, which is
% already included in memoir)
\captionnamefont{\normalfont\bfseries}

% Abstract in ToC
\abstractintoc

% Theorem environments
\newtheorem{theorem}{Theorem}[section]
%\newtheorem{definition}[theorem]{Definition}
%\newtheorem{lemma}[theorem]{Lemma}
%\newtheorem{conjecture}[theorem]{Conjecture}
%\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{claim}[theorem]{Claim}
\newtheorem{fact}[theorem]{Fact}
\newtheorem{property}[theorem]{Property}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Title page

% space between each part of the title page
\newlength{\@titlesecsep}
\setlength{\@titlesecsep}{5em}

% title format
\pretitle{\begin{center}\Large}
\posttitle{\end{center}}

% author format
\preauthor{\begin{center}\normalsize}
\postauthor{\end{center}}

% date format
\predate{\begin{center}\normalsize}
\postdate{\end{center}}

% format of text in between above fields
\newcommand{\@titletextstyle}{\normalsize}

% custom maketitle command
\newcommand{\makeccsthesistitle}{%
  \begin{titlingpage} 
    \calccentering{\unitlength} 
    \begin{adjustwidth*}{\unitlength}{-\unitlength} 
      \maketitle 
    \end{adjustwidth*} 
  \end{titlingpage}
}

\ifdraftdoc % Layout of draft version

% Draft version has accurate date/time on title
\date{\slshape Draft date: \timestamp}

\else % Layout of final version

% between title and author
\renewcommand{\maketitlehookb}{%
  \vspace*{\@titlesecsep}
  \begin{center}\@titletextstyle
    A dissertation presented\\by
  \end{center}
  \vspace*{\@titlesecsep}
}
% between author and date
\renewcommand{\maketitlehookc}{%
  \vspace*{\@titlesecsep}
  \begin{center}\@titletextstyle
    to the Faculty of the Graduate School\\
    of the College of Computer and Information Science\\
    in partial fulfillment of the requirements for the degree of\\
    Doctor of Philosophy
  \end{center}
  \vspace*{\@titlesecsep}
  \begin{center}\@titletextstyle
    Northeastern University\\
    Boston, Massachusetts
  \end{center}
}

% only month, year in date
\def\today{\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi,\space \number\year}

\fi



%%%%%% Signature pages

\typeout{*** TODO: add the signature pages in the final version}